最后更新时间:2020年12月8日
功能介绍
我们正处于信息化时代,每时每刻都在产生、表达地理信息。据统计,目前地理信息已占到了人类活动所涉及信息总量的80%,并且地理信息变化很快。因此,想要很好的管理地理信息,就必须保证空间数据的有效性,那么对地理信息的采集和更新就尤为重要。
现在主流的移动设备无论手机还是平板电脑,均具备无线网络、GPS定位、摄像头等模块,这使得数据采集和更新可以不受时空地域的限制,实时传输数据。此外,移动GIS又结合电子地图,既节约了纸质地图的成本,又提高了数据的精度、质量、可用行和复用率,使用移动GIS进行数据的采集和更新越来越受到大众的青睐。
正是由于具有实际的需求,地图编辑成为移动GIS平台的核心功能之一,MapGIS Mobile开发平台为用户提供了灵活的离在线一体化地图编辑功能,可以满足移动端各类应用需求,具体包括以下三类:
说明:MapGIS Mobile 10.5现全面支持要素编辑,暂未支持同步编辑与增量更新(10.3版本支持此功能)。
首先来了解地图要素编辑功能,其他两个模块在后续开发指南中会进行讲解。地图数据要素编辑,包括要素对象的增、删、改,即要素图形样式信息、几何信息、属性信息的编辑,广泛应用于数据采集相关项目,以及数据更新维护等应用场景。
地图要素编辑可以按照数据类型、要素类型、操作类型三种方法进行分类:
开发者可通过该功能,实现对离线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。
开发者可通过该功能,实现对在线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。
开发者可通过该功能,基于草图编辑器(SketchEditor)实现移动端交互式地图要素编辑。
要素结构
地图要素是地图的基本单位,表示地图上具有位置、分布特点和相互关系的地理实体。如:一个城市的的建筑物可以用点要素表示,道路、河流可以用线要素表示,行政区、居民区可以用区要素表示。
地图要素结构包含三个部分,分别为几何信息,属性信息和图形信息,每部分都具有其独有的信息,共同组成完整的地图要素。
com.zondy.mapgis.geometry.Geometry(如GeoAnno, GeoLine, GeoMultiLine, GeoMultiPoint, GeoMultiPolygon, GeoPoint, GeoPolygon)
com.zondy.mapgis.info.GeomInfo(如AnnInfo, LinInfo, PntInfo, RegInfo)
java.util.HashMap<java.lang.String,java.lang.String>,字符串
功能接口
MapGIS Mobile SDK为离线、在线地图要素的编辑封装了统一的接口,对应的API程序包为com.zondy.mapgis.service.featureservice(10.3:com.zondy.mapgis.core.featureservice),核心接口为要素编辑类FeatureEdit。通过FeatureEdit不同的构造函数来进行不同类型地图数据的操作。通过FeatureEdit的append、delete、update方法实现要素的增、删、改。
接口 | 适用情况 |
---|---|
append() | 添加要素 |
delete() | 删除要素 |
update() | 更新要素 |
离线、在线地图要素编辑功能使用同一套接口,区别在于根据数据类型不同,选择不同的FeatureEdit类构造函数来构造对象。FeatureEdit提供了4个构造函数,如下:
接口 | 适用情况 | 接口 |
---|---|---|
FeatureEdit(VectorLayer vectorLayer) | 离线 | 通过矢量图层构造编辑对象。 离线数据常用的方法。 |
FeatureEdit(IVectorCls cls) | 离线 | 通过矢量类对象构造编辑对象。 通常只提供.db数据库时,采用此方法。 |
FeatureEdit(java.lang.String strIGServerBaseURL, java.lang.String strDataURL) | 在线 | 方便获取在线图层数据的URL地址时采用此方法。 |
FeatureEdit(java.lang.String strIGServerBaseURL, java.lang.String strDocName, int mapID, intlayerID) | 在线 | 方便获取到在线图层数据在地图文档中的ID时,采用此方法。 |
下面通过示例展示四种构造函数的用法:
(1) 通过矢量图层构造要素编辑对象
//获取矢量图层 VectorLayer vectorLayer =mapView.getMap().getLayer(i); //构造要素编辑对象 FeatureEdit featureEdit= new FeatureEdit (vectorLayer); //参数:矢量图层
(2) 通过矢量类构造要素编辑对象(10.5有变更)
//构造数据库对象,并打开数据 DataBase dataBase=new DataBase(); dataBase.open("······/map/WuHan/武汉MKT.mgdb"); //构造简单要素类对象,并打开要素图层 SFeatureCls sFeatureCls=new SFeatureCls(database); sFeatureCls.open(i); //图层ID,从1开始 //构造要素编辑对象 FeatureEdit featureEdit = new FeatureEdit (sFeatureCls); //矢量类对象
(3) 根据在线图层的URL构造要素编辑对象
//根据服务基地址、图层URL构造要素编辑对象 FeatureEdit featureEdit = new FeatureEdit("http://develop.smaryun.com:6163/igs","gdbp://MapGisLocal/武汉MKT/sfcls/武汉市");
(4) 根据在线图层的ID构造要素编辑对象
//根据服务基地址、地图文档名称、地图索引、图层索引构造要素编辑对象 FeatureEdit featureEdit = new FeatureEdit("http://develop.smaryun.com:6163/igs","WuHan",0,0);